package com.maycur.ctrip.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.maycur.ctrip.enumeration.PayType;
import com.maycur.ctrip.enumeration.TrainOrderAuditStatus;
import com.maycur.ctrip.enumeration.TrainOrderStatus;

import java.math.BigDecimal;
import java.util.Date;

/**
 * Created by JoeyXin on 6/30/16.
 * 火车订单基础数据
 */
public class TrainOrderBasicInfo {
    @JsonProperty(value = "OrderID")
    private String orderId;

    @JsonProperty(value = "EmployeeID")
    private String eId;

    //单总金额,不包含后续补退款
    @JsonProperty(value = "OrderAmount")
    private BigDecimal originalAmount;

    //最终成交金额,包含补退款
    @JsonProperty(value = "DealAmount")
    private BigDecimal totalAmount;

    //订票总张数
    @JsonProperty(value = "TotalQuantity")
    private Integer ticketQuantity;

    //订单补充说明
    @JsonProperty(value = "Remark")
    private String remark;

    //是否需要发票
    @JsonProperty(value = "NeedInvoice")
    private Boolean requestInvoice;

    //是否需要保险发票
    @JsonProperty(value = "IsIncludeInsuranceInvoice")
    private Boolean requestInsuranceInvoice;

    //退票产生的退费
    @JsonProperty(value = "RefundAmount")
    private BigDecimal refundAmount;

    //车票类型: 0:普通票; 1:往返票
    @JsonProperty(value = "OrderTicketType")
    private Integer ticketType;

    //车票类型描述:普通票/往返票
    @JsonProperty(value = "OrderTicketTypeDesc")
    private String ticketTypeDesc;

    //订单状态(订单当前的最终状态)
    @JsonProperty(value = "OrderStatus")
    private TrainOrderStatus orderStatus;

    //订单状态名称
    @JsonProperty(value = "OrderStatusName")
    private String orderStatusDesc;

    //订单类型P:配送票; E:电子票
    @JsonProperty(value = "OrderType")
    private String orderType;

    //订单类型描述:配送票/电子票
    @JsonProperty(value = "OrderTypeDesc")
    private String orderTypeDesc;

    //服务费
    @JsonProperty(value = "ServiceFee")
    private BigDecimal serviceAmount;

    @JsonProperty(value = "ContactName")
    private String contactName;

    @JsonProperty(value = "ContactMobile")
    private String contactPhone;

    @JsonProperty(value = "ContactEmail")
    private String contactEmail;

    @JsonProperty(value = "UID")
    private String uId;

    @JsonProperty(value = "UserName")
    private String userName;

    //退票状态: R:已退票, P:退票中, PT: 部分退票
    @JsonProperty(value = "RefundTicketStatus")
    private String refundTicketStatus;

    //支付方式: ACCNT:公司账户支付, CCard:信用卡支付, CASH:现付
    @JsonProperty(value = "PaymentType")
    private String payType;

    //预定时间
    @JsonProperty(value = "DataChange_CreateTime")
    private Date orderedAt;

    //配送费
    @JsonProperty(value = "DeliverFee")
    private BigDecimal postAmount;

    //纸质票出票费
    @JsonProperty(value = "PaperTicketFee")
    private BigDecimal paperTicketAmount;

    //12306 账号
    @JsonProperty(value = "AccountName")
    private String accountIn12306;

    //授权结果
    @JsonProperty(value = "AuditResult")
    private TrainOrderAuditStatus auditedStatus;

    //授权结果描述
    @JsonProperty(value = "AuditResultDesc")
    private String auditedStatusDesc;

    public String getOrderId() {
        return orderId;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    public String geteId() {
        return eId;
    }

    public void seteId(String eId) {
        this.eId = eId;
    }

    public BigDecimal getOriginalAmount() {
        return originalAmount;
    }

    public void setOriginalAmount(BigDecimal originalAmount) {
        this.originalAmount = originalAmount;
    }

    public BigDecimal getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public Integer getTicketQuantity() {
        return ticketQuantity;
    }

    public void setTicketQuantity(Integer ticketQuantity) {
        this.ticketQuantity = ticketQuantity;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Boolean getRequestInvoice() {
        return requestInvoice;
    }

    public void setRequestInvoice(Boolean requestInvoice) {
        this.requestInvoice = requestInvoice;
    }

    public Boolean getRequestInsuranceInvoice() {
        return requestInsuranceInvoice;
    }

    public void setRequestInsuranceInvoice(Boolean requestInsuranceInvoice) {
        this.requestInsuranceInvoice = requestInsuranceInvoice;
    }

    public BigDecimal getRefundAmount() {
        return refundAmount;
    }

    public void setRefundAmount(BigDecimal refundAmount) {
        this.refundAmount = refundAmount;
    }

    public Integer getTicketType() {
        return ticketType;
    }

    public void setTicketType(Integer ticketType) {
        this.ticketType = ticketType;
    }

    public String getTicketTypeDesc() {
        return ticketTypeDesc;
    }

    public void setTicketTypeDesc(String ticketTypeDesc) {
        this.ticketTypeDesc = ticketTypeDesc;
    }

    public TrainOrderStatus getOrderStatus() {
        return orderStatus;
    }

    public void setOrderStatus(TrainOrderStatus orderStatus) {
        this.orderStatus = orderStatus;
    }

    public String getOrderStatusDesc() {
        return orderStatusDesc;
    }

    public void setOrderStatusDesc(String orderStatusDesc) {
        this.orderStatusDesc = orderStatusDesc;
    }

    public String getOrderType() {
        return orderType;
    }

    public void setOrderType(String orderType) {
        this.orderType = orderType;
    }

    public String getOrderTypeDesc() {
        return orderTypeDesc;
    }

    public void setOrderTypeDesc(String orderTypeDesc) {
        this.orderTypeDesc = orderTypeDesc;
    }

    public BigDecimal getServiceAmount() {
        return serviceAmount;
    }

    public void setServiceAmount(BigDecimal serviceAmount) {
        this.serviceAmount = serviceAmount;
    }

    public String getContactName() {
        return contactName;
    }

    public void setContactName(String contactName) {
        this.contactName = contactName;
    }

    public String getContactPhone() {
        return contactPhone;
    }

    public void setContactPhone(String contactPhone) {
        this.contactPhone = contactPhone;
    }

    public String getContactEmail() {
        return contactEmail;
    }

    public void setContactEmail(String contactEmail) {
        this.contactEmail = contactEmail;
    }

    public String getuId() {
        return uId;
    }

    public void setuId(String uId) {
        this.uId = uId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getRefundTicketStatus() {
        return refundTicketStatus;
    }

    public void setRefundTicketStatus(String refundTicketStatus) {
        this.refundTicketStatus = refundTicketStatus;
    }

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType;
    }

    public Date getOrderedAt() {
        return orderedAt;
    }

    public void setOrderedAt(Date orderedAt) {
        this.orderedAt = orderedAt;
    }

    public BigDecimal getPostAmount() {
        return postAmount;
    }

    public void setPostAmount(BigDecimal postAmount) {
        this.postAmount = postAmount;
    }

    public BigDecimal getPaperTicketAmount() {
        return paperTicketAmount;
    }

    public void setPaperTicketAmount(BigDecimal paperTicketAmount) {
        this.paperTicketAmount = paperTicketAmount;
    }

    public String getAccountIn12306() {
        return accountIn12306;
    }

    public void setAccountIn12306(String accountIn12306) {
        this.accountIn12306 = accountIn12306;
    }

    public TrainOrderAuditStatus getAuditedStatus() {
        return auditedStatus;
    }

    public void setAuditedStatus(TrainOrderAuditStatus auditedStatus) {
        this.auditedStatus = auditedStatus;
    }

    public String getAuditedStatusDesc() {
        return auditedStatusDesc;
    }

    public void setAuditedStatusDesc(String auditedStatusDesc) {
        this.auditedStatusDesc = auditedStatusDesc;
    }
}
